#ifndef __HEAD_H__
#define __HEAD_H__

/********std header**********/
#define           _PG_std
#include          <stdio.h>
#include          <stdlib.h>
#include          <string.h>
#include          <strings.h>
#include          <math.h>
#include          <sys/mman.h>
#include          <errno.h>
#include          <stdarg.h>
#include          <time.h>
#include          <stdbool.h>



/**********IO header*************/
#define           _PG_IO
#include          <unistd.h>
#include          <sys/types.h>
#include          <sys/stat.h>
#include          <fcntl.h>
#include          <dirent.h>
#include     	  <signal.h>
#include          <pthread.h>

/*******TCP/UDP/IP header**************/
#define           _PG_IP
#include          <sys/types.h>
#include          <sys/socket.h>
#include          <netinet/in.h>
#include          <arpa/inet.h>

#define BACKLOG 10
#define SIZE    30

//建立双向链表结构体
typedef struct list_head{
	int fd;
	struct in_addr sin_addr;
	in_port_t sin_port;
	struct list_head *prev,*next;
}Dlist,*Dlistp;


/*IO*/
char *gets(char *s);


Dlistp list_init();
void list_add_tail(Dlistp new,Dlistp head);
void list_del(Dlistp entry);
Dlistp fine_node(struct in_addr* sin_addr,Dlistp head);
void ergodic_list(Dlistp head);
int count_numlist(Dlistp head);





#endif
